简易的Java版 eval()函数 |
您所在的位置:网站首页 › java exec函数 exp › 简易的Java版 eval()函数 |
代码说明: 1.允许直接使用,如下: public class EvalTest { public static void main(String[] args) { String code = "int a = 1;" + "int b = 2;" + "System.out.println(a+b);"; Eval eval = new Eval(code); eval.compiler(); eval.run(); } }结果如下: 3为a+b之后的结果
2.允许包含主类,如下: public class EvalTest { public static void main(String[] args) { final StringBuilder code = new StringBuilder(); code.append("public class Hello {"); code.append("public static void main(String [] args){"); code.append("System.out.println(\"Hello World!\");"); code.append(" }"); code.append("}"); Eval eval = new Eval(code.toString()); eval.compiler(); eval.run(); } }结果: 请注意,主类必须位于所有其他类的前面!!!
3.允许指定某目录下的Java文件直接运行,如下: public class EvalTest { public static void main(String[] args) { Eval eval = new Eval("D:/Java/IDEAProject/ReviewJavaBasics/target/classes/","Test181.java"); eval.compiler(); eval.run(); } }Test181.java内容如下: import java.io.*; import java.nio.charset.Charset; import java.util.Scanner; public class Test181 { public static void main(String[] args) { new Test181().test1(); } private void test1() { Runtime runtime = Runtime.getRuntime(); try { Process process = runtime.exec("ping www.baidu.com"); process.waitFor(); try (Scanner scanner = new Scanner(process.getInputStream(), Charset.forName("GBK"));) { while (scanner.hasNext()) { System.out.println(scanner.nextLine()); } } } catch (IOException | InterruptedException e) { e.printStackTrace(); } } }结果: 注意: 在EvalTest中的 Eval eval = new Eval(路径,文件名);文件名允许指定非java文件,作为输入源,测试如下: public class EvalTest { public static void main(String[] args) { Eval eval = new Eval("D:/Java/IDEAProject/ReviewJavaBasics/target/classes/","zhw.txt"); eval.compiler(); eval.run(); } }zhw.txt 工作目录: 运行结果: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |